//package leetcode_ago.LinearList.double_link;
//
//public class DoubleLinkedListWithHead {
//    //当前存储的元素个数
//    private int size;
//    //虚拟头节点[只作为头部，不存储元素]
//    private Node dummyHead=new Node(null,-1,null);
//
//
//    //判断链表是否为空
//    public boolean isEmpty(){
//        return size==0;
//    }
//
//    /**
//     * 1.插入
//     */
////    public void addIndex(int index,int val){//链表index位置添加一个元素
////        if (index<0||index>size) {
////            throw new IllegalArgumentException("Add failed. add index illegal.");
////        }
////        Node prev=node(index-1);
////        //所插入节点都是中间节点，找到index位置的前驱节点
////
////        Node node=new Node(prev,val,prev.next);
////        prev.next.prev=node;
////        prev.next=node;
////        size++;
////    }
//
//    /**
//     * 找index位置对应节点
//     * @param index
//     * @return
//     */
//    private Node node(int index) {
//        Node cur=dummyHead;
//            for (int i = 0; i < index; i++) {
//                cur = cur.next;
//            }
//        return cur;
//    }
//
//    public void addFirst(int val){//头插
//        addIndex(0,val);
//    }
//    public void addLast(int val){//尾插
//        addIndex(size-1,val);
//    }
//
//    @Override
//    public String toString() {
//        StringBuilder sb=new StringBuilder("");
//        Node node=dummyHead.next;
//        while(node!=null){
//            sb.append(node.val);
//            sb.append("->");
//            node=node.next;
//        }
//        sb.append("NULL");
//        String ret=sb.toString();
//        return ret;
//    }
//
//    private class Node {
//        //前驱节点
//       Node prev;
//        //保存具体值
//        int val;
//        //指向后继节点
//        Node next;
//
//        public Node(Node prev, int val, Node next) {
//            this.prev = prev;
//            this.val = val;
//            this.next = next;
//        }
//    }
//}
